package Design; // 定义包名

import java.awt.*; // 导入AWT包，用于图形界面组件
import javax.swing.*; // 导入Swing包，用于创建更复杂的图形界面
import java.util.Calendar; // 导入Calendar类，用于处理日期和时间


public class CustomDatePicker extends JFrame { // 定义一个继承自JFrame的类

    private static final long serialVersionUID = 1L; // 定义序列化版本号

    private JComboBox<String> datePicker; // 定义一个JComboBox用于选择日期

    public CustomDatePicker() { // 构造方法
        setTitle("Custom Date Picker"); // 设置窗体标题
        setSize(300, 80); // 设置窗体大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体的关闭操作

        // 获取屏幕的宽度和高度
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int screenWidth = screenSize.width;
        int screenHeight = screenSize.height;

        // 计算窗口的左上角坐标，使其居中
        int x = (screenWidth - getWidth()) / 2;
        int y = (screenHeight - getHeight()) / 2;
        setLocation(x, y); // 设置窗体位置，使其居中

        setLayout(new BorderLayout()); // 设置窗体的布局管理器

        datePicker = new JComboBox<>(); // 创建JComboBox实例
        datePicker.setEditable(true); // 设置JComboBox为可编辑模式
        updateDateList(); // 调用方法更新日期列表

        add(datePicker, BorderLayout.CENTER); // 将JComboBox添加到窗体中心
        setVisible(true); // 设置窗体为可见状态
    }

    private void updateDateList() { // 私有方法，用于更新日期列表
        datePicker.removeAllItems(); // 清空JComboBox中的所有项
        Calendar calendar = Calendar.getInstance(); // 获取当前日期和时间的Calendar实例

        for (int i = 0; i < 100; i++) { // 循环100次，生成最近100天的日期
            String date = String.format("%tF", calendar.getTime()); // 格式化日期为"月/日/年"的格式
            datePicker.addItem(date); // 将日期添加到JComboBox中
            calendar.add(Calendar.DATE, 1); // 将Calendar的日期增加1天
        }
    }

    public static void main(String[] args) { // 主方法
        SwingUtilities.invokeLater(new Runnable() { // 使用SwingUtilities.invokeLater来保证GUI更新在事件分派线程中执行
            @Override
            public void run() { // 重写run方法
                new CustomDatePicker(); // 创建CustomDatePicker实例
            }
        });
    }
}
